In nonvolatile storage media such as NAND flash memory, blocks that are units of storage may become unable to be used as storage areas owing to such a reason as many errors. Such blocks that are unable to be used are called bad blocks or defective blocks, and controlled to be excluded from blocks (free blocks) in which data are to be stored.
In related art, a method of recording information indicating the positions or the like of blocks (bad blocks) in which errors are found during an inspection process in manufacturing in the form of defect information table (bad block statistical information) so that the blocks are not handled as free blocks that can be used is known. The defect information table is recorded on a nonvolatile storage medium and expanded into a volatile storage medium (such as a RAM) at system start-up for use.
The units of managing the defect information table are units of storage (such as units of blocks) in a nonvolatile storage medium, and the defect information table assumed to be entirely expanded into a volatile storage medium at start-up for use. In a case of a storage medium with a higher percent defective, however, more granular defect avoidance control in units of bits, for example, is required. In this case, however, the defect information table has a large size and cannot be expanded into a volatile storage medium such as a DRAM at a time. Thus, the defect information table stored in the nonvolatile storage medium needs to be referred to each time data are written/read thereinto/therefrom and the time for reading the defect information table from the nonvolatile storage medium is an overhead.